/*=============================================================================

  APPLICATION MANAGER MODULE

  FILE: IOmgr.cpp
  
  DESCRIPTION

    Manager Module Definition

  EXTERNALIZED FUNCTIONS

    
  Copyright (c) DaeSung Engineering Inc. All rights reserved.

=============================================================================*/
/*=============================================================================

                             EDIT HISTORY

  ---------  -------  -------------------------------------------------------
    when       who     what, where, why
  ---------  -------  -------------------------------------------------------
   06/28/03   nso4th   Version 0.1

=============================================================================*/

/*=============================================================================
  HEADER INCLUSION
=============================================================================*/
#include "IOmgr_MOD.h"

/*=============================================================================
  CONSTANT IMPLEMENTATION
=============================================================================*/
#define STATE_TICK_TIME				(50) // 50 msec.

/*=============================================================================
  IOmgr CLASS IMPLEMENTATION
=============================================================================*/
IOmgr::IOmgr():mgrBase()
{
	int32		i;

	// Set the application name
	SetAppName(CUST_APP_NAME_SHORT);
	
	// Retrieve the event
	Event_SetType(IO_MGR);
	
	// Retrieve the state machine control
	State_SetTickTime(STATE_TICK_TIME);
	State_SetEventID(IOmgr_CHANGE_MAJSTATE_E, 0x00);

	// Register the timer ID
	for(i=0; i<IOmgr_TIMER_ID_MAX; i++)
	{
		Timer_SetEvent(i, (IOmgr_TIMER_0_E+i));
		Timer_Dereg(i);
	}

	MON_Alloc();
	CMD_Alloc();
}

IOmgr::~IOmgr()
{
	CMD_Free();
	MON_Free();
}

boolean IOmgr::Init(void)
{
	ObjList_Set(IO_MGR, this);
	
	mgrBase::Init();

	State_Major(IOmgr_IDL_S);
	
	return	TRUE;
}

boolean IOmgr::Close(void)
{
	ObjList_Set(IO_MGR, NULL);

	Task_Killed(m_pTask);
	MON_LOCK(TRUE);
	mgrBase::Close();

	return	TRUE;
}

void IOmgr::STATE_SYNC(mcxt m_pTask)
{
	if(m_reqWait == FALSE)
		return;
	
	m_monLock = m_reqLock;
	m_reqWait = FALSE;

	Sync_Set(m_monSync, TRUE);
}

void IOmgr::STATE_POLLING(void)
{
}

/*--- END OF IOmgr.CPP ---*/
